# Лекция: RestAssured в Java

RestAssured - это библиотека для тестирования REST API в Java. Она предоставляет удобный и понятный DSL для создания и отправки HTTP-запросов и проверки HTTP-ответов.

## Добавление RestAssured в проект

Чтобы использовать RestAssured, нужно добавить его в зависимости проекта.

```xml
<dependencies>
    <dependency>
        <groupId>io.rest-assured</groupId>
        <artifactId>rest-assured</artifactId>
        <version>4.3.3</version>
        <scope>test</scope>
    </dependency>
</dependencies>
```

## Создание и отправка запросов

С помощью RestAssured можно легко создавать и отправлять HTTP-запросы.

```java
import static io.restassured.RestAssured.*;

given().
    param("key", "value").
when().
    get("http://example.com").
then().
    statusCode(200);
```

## Проверка ответов

RestAssured предоставляет множество методов для проверки HTTP-ответов.

```java
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;

given().
    param("key", "value").
when().
    get("http://example.com").
then().
    statusCode(200).
    body("key", equalTo("value"));
```

---

# Практические задания

1. **Создайте и отправьте GET-запрос на `http://httpbin.org/get` с параметром `key=value`. Проверьте, что статус код ответа равен 200.** (Сложность: 1/5)
```java
given().
    param("key", "value").
when().
    get("http://httpbin.org/get").
then().
    statusCode(200);
```

2. **Создайте и отправьте POST-запрос на `http://httpbin.org/post` с параметром `key=value`. Проверьте, что статус код ответа равен 200.** (Сложность: 1/5)
```java
given().
    param("key", "value").
when().
    post("http://httpbin.org/post").
then().
    statusCode(200);
```

3. **Создайте и отправьте GET-запрос на `http://httpbin.org/get` с параметром `key=value`. Проверьте, что в теле ответа содержится `"key": "value"`.** (Сложность: 2/5)
```java
given().
    param("key", "value").
when().
    get("http://httpbin.org/get").
then().
    body("args.key", equalTo("value"));
```

4. **Создайте и отправьте POST-запрос на `http://httpbin.org/post` с параметром `key=value`. Проверьте, что в теле ответа содержится `"key": "value"`.** (Сложность: 2/5)
```java
given().
    param("key", "value").
when().
    post("http://httpbin.org/post").
then().
    body("form.key", equalTo("value"));
```

5. **Создайте и отправьте GET-запрос на `http://httpbin.org/get` с параметрами `key1=value1` и `key2=value2`. Проверьте, что в теле ответа содержится `"key1": "value1"` и `"key2": "value2"`.** (Сложность: 3/5)
```java
given().
    param("key1", "value1").
    param("key2", "value2").
when().
    get("http://httpbin.org/get").
then().
    body("args.key1", equalTo("value1")).
    body("args.key2", equalTo("value2"));
```